package us.proyecto.canarios.actions.concursos;

import java.util.HashSet;
import java.util.List;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelectionIndex;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.log.Log;

import us.proyecto.canarios.dao.ConcursoDAO;
import us.proyecto.canarios.dao.DiccionarioDAO;
import us.proyecto.canarios.dao.PajarosDAO;
import us.proyecto.canarios.dao.UsuarioDAO;
import us.proyecto.canarios.domain.Asociacion;
import us.proyecto.canarios.domain.Concurso;
import us.proyecto.canarios.domain.Criador;
import us.proyecto.canarios.domain.Pajaro;
import us.proyecto.canarios.domain.Puntuacion;
import us.proyecto.canarios.domain.Tipo;

@Name("consultaPajaro")
@Scope(ScopeType.SESSION)
public class ConsultaPajarosAction {

    @Logger
    Log log;

    private String numAnilla;
    private Tipo tipo;
    private Criador criador;

    private Concurso concurso;

    @In(create = true)
    private UsuarioDAO usuarioDAO;

    @DataModel("listaPajaros")
    private List<Puntuacion> listaPajaros;
    @DataModelSelectionIndex("listaPajaros")
    private int index;

    private List<Criador> listaCriadores;
    private List<Tipo> listaTipos;

    @In(create = true)
	private ConcursoDAO concursoDAO;

	@In(create = true)
	private DiccionarioDAO diccionariosDAO;

	@In(create = true)
	private PajarosDAO pajarosDAO;

	private Boolean consulta = false;


    public void buscar() {
        String where = new String(" p.concurso.idConcurso = " + concurso.getIdConcurso());
        if(numAnilla != null && !numAnilla.equals("")) {
        	where = where + " and upper(p.pajaro.numAnilla) like upper('%" + numAnilla+"%') ";
        }
        if(tipo != null){
        	where = where + " and p.pajaro.tipo.idTipo = "+ tipo.getIdTipo();
        }
        if(criador != null) {
        	where = where + " and p.pajaro.criador.idCriador = " + criador.getIdCriador();
        }
        listaPajaros = pajarosDAO.getListPuntuacionByWhere(where);
        if(listaPajaros == null || listaPajaros.size() == 0) {
            FacesMessages.instance().add("No hay pájaros que coincidan con los criterios introducidos");
        }
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public String traduce(String s){
        String res="";
        if(s.equals("true")){
            res="Si";
        }else{
            res="No";
        }
        return res;

    }


    @Begin(join = true, flushMode=FlushModeType.MANUAL)
    public String gestion(Concurso con) {
		if(con.getIdConcurso()!=0){
			concurso = con;
			consulta = false;
			listaTipos = diccionariosDAO.getListaTipos();
	    	listaCriadores = concursoDAO.getListaCriadoresXConcurso(concurso);
			listaCriadores = usuarioDAO.getCriadores();
			numAnilla = "";
			return "true";
		}
		return "false";

	}

    public String gestionPasados(Concurso con) {
		if(con.getIdConcurso()!=0){
			concurso = con;
			consulta = false;
			listaTipos = diccionariosDAO.getListaTipos();
	    	listaCriadores = concursoDAO.getListaCriadoresXConcurso(concurso);
			listaCriadores = usuarioDAO.getCriadores();
			numAnilla = "";
			return "true";
		}
		return "false";

	}

    public String gestionProximos(Concurso con) {
		if(con.getIdConcurso()!=0){
			concurso = con;
			consulta = true;
			listaTipos = diccionariosDAO.getListaTipos();
	    	listaCriadores = concursoDAO.getListaCriadoresXConcurso(concurso);
			listaCriadores = usuarioDAO.getCriadores();
			numAnilla = "";
			return "true";
		}
		return "false";

	}

	public String getNumAnilla() {
		return numAnilla;
	}

	public void setNumAnilla(String numAnilla) {
		this.numAnilla = numAnilla;
	}

	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	public Criador getCriador() {
		return criador;
	}

	public void setCriador(Criador criador) {
		this.criador = criador;
	}

	public List<Puntuacion> getListaPajaros() {
		return listaPajaros;
	}

	public void setListaPajaros(List<Puntuacion> listaPajaros) {
		this.listaPajaros = listaPajaros;
	}

	public List<Criador> getListaCriadores() {
		return listaCriadores;
	}

	public void setListaCriadores(List<Criador> listaCriadores) {
		this.listaCriadores = listaCriadores;
	}

	public List<Tipo> getListaTipos() {
		return listaTipos;
	}

	public void setListaTipos(List<Tipo> listaTipos) {
		this.listaTipos = listaTipos;
	}

	public Boolean getConsulta() {
		return consulta;
	}

	public void setConsulta(Boolean consulta) {
		this.consulta = consulta;
	}





}

